package Day_0210.DesignPattern;

/**
 * @author zxc
 * @date 2023/02/11 12:13
 **/
public class Responsibility_Chain_Pattern {
    public static void main(String[] args) {
        /**
         * 谈一谈对于责任链模式的理解
         * ===》
         * 1.责任链模式定义
         * （1）是行为型设计模式之一，其将链中每一个节点看作是一个对象，每个节点处理的请求均不同，且内部自动维护下一个节点对象。
         * （2）当一个请求从链式的首端发出时，会沿着链的路径依次传递给每一个节点对象，直至有对象处理这个请求为止。
         *
         * 2.优点
         * （1）解耦了请求与处理；
         * （2）请求处理者（节点对象）只需关注自己感兴趣的请求进行处理即可，对于不感兴趣的请求，直接转发给下一级节点对象；
         * （3）具备链式传递处理请求功能，请求发送者无需知晓链路结构，只需等待请求处理结果；
         * （4）链路结构灵活，可以通过改变链路结构动态地新增或删减责任；
         * （5）易于扩展新的请求处理类（节点），符合 开闭原则；
         *
         * 3.缺点
         * （1）责任链路过长时，可能对请求传递处理效率有影响；
         * （2）如果节点对象存在循环引用时，会造成死循环，导致系统崩溃；
         *
         * 4.生活案列：
         * 我们在公司内部发起一个OA审批流程，项目经理审批、部门经理审批。老板审批、人力审批。
         * 这就是生活中的责任链模式，每个角色的责任是不同。
         *
         * SpringMVC中的拦截器和Mybatis中的插件机制，都是拦截器经典实现。
         *
         */
    }
}
